package RedisProvider

import (
	"github.com/garyburd/redigo/redis"
	"Volta/Config"
)

type Redis struct {
	Conn redis.Conn
	RedisPool *redis.Pool
}

func (redisModel *Redis) Connect() bool{
	conn,err := redis.Dial("tcp",Config.Database.RedisHost+":"+Config.Database.RedisPort)
	if err != nil {
		return false
	}
	redisModel.Conn = conn
	redisModel.RedisPoolInit()
	return true
}

func (redisModel *Redis) RedisPoolInit() {
	redisModel.RedisPool = &redis.Pool{
		MaxIdle:   1000,
		MaxActive: 10,
		Dial: func() (redis.Conn, error) {
			c, err := redis.Dial(
				"tcp",
				Config.Database.RedisHost+":"+Config.Database.RedisPort,
				redis.DialDatabase(Config.Database.RedisDB),
				redis.DialPassword(Config.Database.RedisPassword))
			if err != nil {
				return nil, err
			}
			return c, err
		},
	}
}

func (redisModel *Redis) GetRedis() *redis.Pool {
	return redisModel.RedisPool
}


